import java.util.Scanner;

public class Main {
    //计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值    。
    public static void main1(String[] args) {
        double sum = 0;
        int i;
        int key = 1;
        for(i = 1;i <= 100;i++) {
            sum += 1.0/i * key;
            key *= -1;
        }
        System.out.println(sum);
    }
    //输出一个整数的每一位，如：123的每一位是3，2，1
    public static void main2(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        int i = 0;
        while(num>0) {
            System.out.print(num%10+" ");
            num/=10;
        }
    }
    //编写代码模拟三次密码输入的场景。 最多能输入三次密码，密码正确，提示“登录成功”,
    // 密码错误， 可以重新输 入，最多输入三次。三次均错，则提示退出程序
    public static void main3(String[] args) {
        String Key = "abcdefg";
        Scanner scan = new Scanner(System.in);
        int i = 3;
        while(i > 0) {
            String k = scan.next();
            if(k.equals(Key)) {
                System.out.println("密码正确~登录成功！");
                break;
            }
            i--;
            System.out.println("密码错误，还剩 "+i+"次机会");
        }
        if(i == 0) {
            System.out.println("三次密码输入错误，登录失败！");
        }
    }

  //创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。
  //要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
  public static int MaxTwo(int x,int y) {
       return x > y ? x : y;
  }
  public static int MaxThree(int x,int y,int z) {
        int K = MaxTwo(x,y);
        return MaxTwo(K,z);
  }
  public static void main4(String[] args) {
      Scanner scan = new Scanner(System.in);
      int x,y,z,ret;
      System.out.println("比较两个数的大小->");
      x = scan.nextInt();
      y = scan.nextInt();
      ret = MaxTwo(x,y);
      System.out.println("max = "+ret);
      System.out.println("比较三个数的大小->");
      x = scan.nextInt();
      y = scan.nextInt();
      z = scan.nextInt();
      ret = MaxThree(x,y,z);
      System.out.println("max = "+ret);
  }

  //求斐波那契数列的第n项。(迭代实现)
  public static int Fib(int n) {
        if(n == 1) {
            return 1;
        }
        if(n == 0) {
            return 0;
        }
        return Fib(n-1)+Fib(n-2);
  }
    public static void main5(String[] args) {
        int n;
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt();
        int ret = Fib(n);
        System.out.println(ret);
    }
    //1 1 2 3 5 8

    //在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
    public static int Sum(int x,int y) {
        return x+y;
    }
    public static double Sum(double x,double y,double z) {
        return x+y+z;
    }
    public static void main6(String[] args) {
        int ret1 = Sum(12,33);
        double ret2 = Sum(1.1,2.2,3.3);
        System.out.println("两数相加 = "+ret1);
        System.out.println("三数相加 = "+ret2);
    }
    //在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？
    public static int Max(int x,int y) {
        return x > y ? x :y;
    }
    public static double Max(double x,double y,double z) {
        double max;
        if(x > y)
            max = x;
        else
            max = y;
        if(max > z)
            return max;
        else
            return z;
    }
    public static void main7(String[] args) {
        int ret1 = Max(88,90);
        double ret2 = Max(2.3,3.3,1.9);
        System.out.println("两个数中的较大值是->"+ret1);
        System.out.println("三个数中的较大值是->"+ret2);
    }

    //打印用“*”组成的X形图案。
    //单组输入
    public static void main8(String[] args) {
        Scanner scan=new Scanner(System.in);
        int X = scan.nextInt();
        int i = 0;
        int j = 0;
        char[][] str = new char[X][X];
        for(i = 0;i < X;i++) {
            for(j = 0;j < X;j++) {
                str[i][j]=' ';
            }
        }
        for(i = 0;i < X;i++) {
            str[i][i]='*';
            str[X-1-i][i]='*';
        }
        for(i = 0;i < X;i++) {
            for(j = 0;j < X;j++) {
                System.out.print(str[i][j]);
            }
            System.out.println();
        }
    }
    //多组输入
    public static void main9(String[] args) {
        Scanner scan=new Scanner(System.in);
        while(scan.hasNextInt()) {
            int X = scan.nextInt();
            int i = 0;
            int j = 0;
            char[][] str = new char[X][X];
            for(i = 0;i < X;i++) {
                for(j = 0;j < X;j++) {
                    str[i][j]=' ';
                }
            }
            for(i = 0;i < X;i++) {
                str[i][i]='*';
                str[X-1-i][i]='*';
            }
            for(i = 0;i < X;i++) {
                for(j = 0;j < X;j++) {
                    System.out.print(str[i][j]);
                }
                System.out.println();
            }
        }
    }
    //递归实现N的阶乘
    public static int Factorial(int N) {
        if(N==1)
            return 1;
        return N*Factorial(N-1);
    }
    public static void main10(String[] args) {
        int N;
        Scanner scan = new Scanner(System.in);
        N = scan.nextInt();
        System.out.println(Factorial(N));
    }

    //递归求和
    public static int Sum(int N) {
        if(N==1)
            return 1;
        return Sum(N-1)+N;
    }
    public static void main11(String[] args) {
        int N;
        Scanner scan = new Scanner(System.in);
        N = scan.nextInt();
        System.out.println(Sum(N));
    }

    //按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)    （递归）
    public static int Print(int N) {
        //1 2 3 4
        if(N<10) {
            System.out.print(N+" ");
            return 0;
        }
        Print(N/10);
        System.out.print(N%10+" ");
        return 0;
    }
    public static void main12(String[] args) {
        int N;
        Scanner scan = new Scanner(System.in);
        N = scan.nextInt();

        Print(N);
    }

    //写一个递归方法，输入一个非负整数，返回组成它的数字之和
    public static int SumNumber(int N) {
        if(N<10)
            return N;
        return N%10+SumNumber(N/10);
    }
    public static void main13(String[] args) {
        System.out.println(SumNumber(12345));
    }

    //递归求斐波那契数列的第 N 项
    //1，1，2，3，5，8，13，21，34，55
    public static int Fib_N(int N) {
        if(N == 1)
            return 1;
        if(N == 0)
            return 0;
        return Fib_N(N-1)+Fib_N(N-2);
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N = scan.nextInt();
        System.out.println(Fib_N(N));
    }

}